package com.smartsystem.common.service;

import org.springframework.stereotype.Service;

import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Token黑名单服务
 * 用于管理已失效的Token
 * 
 * 注意：这是一个简单的内存实现，生产环境建议使用Redis
 */
@Service
public class TokenBlacklistService {
    
    /**
     * 黑名单Token集合（内存存储）
     * 生产环境建议使用Redis存储
     */
    private final Set<String> blacklistedTokens = ConcurrentHashMap.newKeySet();
    
    /**
     * 将Token加入黑名单
     * @param token JWT Token
     */
    public void addToBlacklist(String token) {
        if (token != null && !token.trim().isEmpty()) {
            blacklistedTokens.add(token);
        }
    }
    
    /**
     * 检查Token是否在黑名单中
     * @param token JWT Token
     * @return 是否在黑名单中
     */
    public boolean isBlacklisted(String token) {
        return token != null && blacklistedTokens.contains(token);
    }
    
    /**
     * 从黑名单中移除Token（一般不需要，Token过期后自动失效）
     * @param token JWT Token
     */
    public void removeFromBlacklist(String token) {
        if (token != null) {
            blacklistedTokens.remove(token);
        }
    }
    
    /**
     * 清空黑名单（谨慎使用）
     */
    public void clearBlacklist() {
        blacklistedTokens.clear();
    }
    
    /**
     * 获取黑名单大小
     * @return 黑名单Token数量
     */
    public int getBlacklistSize() {
        return blacklistedTokens.size();
    }
}